package com.idlecode.util;

import cn.hutool.core.text.NamingCase;
import cn.hutool.core.util.StrUtil;

/**
 * 代码生成器 工具类
 */
public class GenUtil {


    /**
     * 获取模块名
     *
     * @param tableName 包名
     * @return 模块名
     */
    public static String getModuleName(String tableName) {
        String[] tableSplit = tableName.split("_");
        if (tableSplit.length == 1) {
            return tableName;
        }
        String packagePath = "";
        for (int i = 1, size = tableSplit.length; i < size; i++) {
            if (i >= 3) {
                break;
            }
            String tablePath = tableSplit[i];
            packagePath = packagePath + tablePath + ".";
        }
        return packagePath.substring(0, packagePath.length() - 1).toLowerCase();
    }

    /**
     * 获取功能名，默认使用表名作为功能名
     *
     * @param tableName 表名
     * @return 功能名
     */
    public static String getFunctionName(String tableName) {
        return tableName;
    }

    /**
     * 表名转驼峰并移除前后缀
     *
     * @param upperFirst   首字母大写
     * @param tableName    表名
     * @param removePrefix 删除前缀
     * @param removeSuffix 删除后缀
     * @return java.lang.String
     */
    public static String camelCase(boolean upperFirst, String tableName, String removePrefix, String removeSuffix) {
        String className = tableName;
        // 移除前缀
        if (StrUtil.isNotBlank(removePrefix)) {
            className = StrUtil.removePrefix(tableName, removePrefix);
        }
        // 移除后缀
        if (StrUtil.isNotBlank(removeSuffix)) {
            className = StrUtil.removeSuffix(className, removeSuffix);
        }
        // 是否首字母大写
        if (upperFirst) {
            return NamingCase.toPascalCase(className);
        } else {
            return NamingCase.toCamelCase(className);
        }
    }
}
